#ifndef JOUEUR_H
#define JOUEUR_H

#include <QtGui>
#include "missions.h"

/**
 * @author TAFFOREAU PERIGNON
 * @brief Représente un joueur du jeu
 *
 */
class Joueur : public QObject
{
    Q_OBJECT

public:
    Joueur(QObject *parent = 0) : QObject(parent){
        this->id = -1;
        this->nbEtat = 0;
        this->nbPion = 0;
        this->nbPionRestant = 0;
        this->vaincupar = -1 ;
    }

    Joueur(QString nom, QObject *parent = 0) : QObject(parent){
        this->id = -1;
        this->nbEtat = 0;
        this->nbPion = 0;
        this->nbPionRestant = 0;
        this->vaincupar = -1 ;
        setNom(nom);
    }

    Joueur(int id, QString nom, QObject *parent = 0) : QObject(parent){
        setId(id);
        setNom(nom);
        this->nbEtat = 0;
        this->nbPion = 0;
        this->nbPionRestant = 0;
        this->vaincupar = -1 ;
    }

    QString getNom(){
        return nom;
    }

    void setNom(QString nom){
        this->nom = nom;
    }

    int getId(){
        return id;
    }

    void setId(int id){
        this->id = id;
    }

    Qt::GlobalColor getCouleur(){
        switch(id){
            case 0:
                return Qt::green;
            case 1:
                return Qt::blue;
            case 2:
                return Qt::magenta;
            case 3:
                return Qt::cyan;
            case 4:
                return Qt::yellow;
            case 5:
                return Qt::red;
        }

        return Qt::black;
    }
    Qt::GlobalColor getCouleurDark(){
        switch(id){
            case 0:
                return Qt::darkGreen;
            case 1:
                return Qt::darkBlue;
            case 2:
                return Qt::darkMagenta;
            case 3:
                return Qt::darkCyan;
            case 4:
                return Qt::darkYellow;
            case 5:
                return Qt::darkRed;
        }
        return Qt::black;
    }

    /*
    QString getCouleurInfo(){
        if (getCouleur()==Qt::green) return "QGroupBox{color:green;}";
        if (getCouleur()==Qt::blue) return "QGroupBox{color:blue;}";
        if (getCouleur()==Qt::magenta) return "QGroupBox{color:magenta;}";
        if (getCouleur()==Qt::cyan) return "QGroupBox{color:cyan;}";
        if (getCouleur()==Qt::yellow) return "QGroupBox{color:yellow;}";
        if (getCouleur()==Qt::red) return "QGroupBox{color:red;}";
    }
    */

    QString getCouleurInfo(){
        if (getCouleur()==Qt::green) return "green";
        if (getCouleur()==Qt::blue) return "blue";
        if (getCouleur()==Qt::magenta) return "magenta";
        if (getCouleur()==Qt::cyan) return "cyan";
        if (getCouleur()==Qt::yellow) return "yellow";
        if (getCouleur()==Qt::red) return "red";
        // défaut
        return "" ;
    }

    void setNbEtat(int nbEtat){
        this->nbEtat = nbEtat;
        emit updateStat();
    }

    void setNbPion(int nbPion){
        this->nbPion = nbPion;
        emit updateStat();
    }

    int getNbEtat(){
        return nbEtat;
    }

    int getNbPion(){
        return nbPion;
    }

    void setNbPionRestant(int nbPionRestant){
        this->nbPionRestant = nbPionRestant;
        emit updateStat();
    }

    int getNbPionRestant(){
        return nbPionRestant;
    }

    Missions* getObjectif()
    {
        return num_objectif;
    }

    void setObjectif(Missions* obj)
    {
        num_objectif = obj;
    }

    int getVaincupar()
    {
        return vaincupar;
    }

    void setVaincupar(int id)
    {
        vaincupar = id;
    }

signals:
    void updateStat();

protected:
    QString nom;
    int id;

    int nbEtat;
    int nbPion;
    int nbPionRestant;
    Missions* num_objectif;
    int vaincupar;
};



#endif // JOUEUR_H
